数据结构课程设计三 |
您所在的位置:网站首页 › 读取 英文 › 数据结构课程设计三 |
目录
一、实验内容 二、实验要求 三、实现提示: 四、实验方案及其论证 五、数据结构和主要函数 六、源代码
一、实验内容 对于一篇给定的英文文章,分别利用线性表和二叉排序树来实现单词频率的统计,实现低频词的过滤,并比较两种方法的效率。 二、实验要求 对于一篇给定的英文文章,分别利用线性表和二叉排序树来实现单词频率的统计,实现低频词的过滤,并比较两种方法的效率。具体要求如下:读取英文文章文件(Infile.txt),识别其中的单词。分别利用线性表和二叉排序树构建单词的存储结构。当识别出一个单词后,若线性表或者二叉排序树中没有该单词,则在适当的位置上添加该单词;若该单词已经被识别,则增加其出现的频率。统计结束后,删除出现频率低于五次的单词,并显示该单词和其出现频率。其余单词及其出现频率按照从高到低的次序输出到文件中(Outfile.txt),同时输出用两种方法完成该工作所用的时间。计算查找表的ASL值,分析比较两种方法的效率。系统运行后主菜单如下:当选择1后进入以下界面:
其中选择2时显示利用线性表来实现所有功能所用的时间。 当在主菜单选择2二叉排序树后,进入的界面与上图类同。 三、实现提示: 1、在统计的过程中,分词时可以利用空格或者标点符号作为划分单词依据,文章中默认只包含英文单词和标点符号。 2、对单词进行排序时,是按照字母序进行的,每个结点还应包含该单词出现的频率。 3、存储结构的定义 二叉排序树的存储表示 typedef struct BSTNode{ string WordName; //单词名称 int count; //单词出现频率 struct BSTNode *next; } BSTNode, *BSTree; 4、实现过程可参见教材上线性表和二叉排序树的相关算法。 四、实验方案及其论证 语言:C++ 运行环境:VS2019 可行性分析:建立单链表存储InFile.txt英语文章单词及频率,建立二叉排序树存储InFile.txt英语文章单词和频率,分别实现单词统计,删除频率低的单词,输出其余单词,并计算ASL值。 五、数据结构和主要函数//线性表的存储定义 typedef struct LNode { string WordName; int count; LNode* next; }LNode, *LinkList; //单链表类 class Linear{ private: LNode* first; public: //链表的创建 构造函数 Linear() { first = new LNode(); first->next = NULL; } //线性表添加单词 void LinearAdd(string tempWord); //读取文件 void LinearRead(); //删除频率低于5的单词 void LinearDelete(); //高频写入文件 void LinearWrite(); //线性表 void LinearTable(); //计算ASL void FindASL(); }; //二叉排序树的存储定义 typedef struct BiNode { string WordName; //单词名称 int count; //单词出现频率 struct BiNode* lchild; struct BiNode* rchild; } BSTNode, * BSTree; BiNode* GetRoot(); //二叉树添加单词 BiNode* InsertBST(BiNode* root,BiNode *s); //读取文件 BiNode* ReadBST(); //删除频率低于5的单词 void DeleteBST(BiNode* root); //右中左遍历 void GetInBST(BiNode* root); //完成写入文件 void WriteBST(BiNode* root); //二叉排序树 void TableBST(); //计算ASL void FindASL(); 六、源代码https://blog.csdn.net/m0_53276696/article/details/118096202
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |